В ранней разработке на JavaScript Загрязнение пространства имён было серьёзным препятствием. Когда несвязанный код делит один набор глобальных имён переменных, возникают непредсказуемые конфликты. Современные подходы перешли от беспорядочного стиля к изолированным модульным системам.
1. Функциональная изоляция (IIFE)
Обернув код в выполняемое немедленно выражение функции (IIFE), мы создаём частную область видимости. Переменные, такие как names остаются внутри функции и недоступны для глобальной среды.
var internal = "secret";
console.log(internal);
})();
2. Интерфейсы на основе объектов
Чтобы предоставить функциональность внешнему миру, модуль возвращает объект, выступающий в роли его общественного интерфейса. Это группирует связанные методы (например, name и number) под одним восстановленным глобальным переменной.
3. Паттерн экспорта
Сложная вариация предполагает передачу объекта exports внутрь IIFE. Это позволяет модулю напрямую привязать свой API к определённой цели пространства имён, обеспечивая гибкость при использовании модуля.